package com.bjsxt.rmi;

import com.bjsxt.rmi.api.FirstInterface;
import com.bjsxt.rmi.impl.FirstRMIImpl;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

/**
 * 1、主方法，创建一个服务对象，提供服务，并注册到Registry上。
 * 2、RMI的Registry在创建的时候，会自动启动一个子线程，并升级为守护进程（服务线程，精灵线程）
 * */
public class MainClass {
    public static void main(String[] args) {
        try {
            System.out.println("服务器启动中...");
            //System.out.println(LocateRegistry.getRegistry());

            FirstInterface firstInterface = new FirstRMIImpl();
            //创建服务对象

            LocateRegistry.createRegistry(9998 );
            //注册到Registry(注册中心)上。
           // System.out.println(LocateRegistry.getRegistry());

            //Naming.bind("rmi://localhost:9999/first",firstInterface);
            //绑定一个服务到注册中心，提供命名格式为：rmi://ip:port/别名
            //如果服务重复，抛出异常，重复的定义是命名冲突。

            Naming.rebind("rmi://localhost:9998/first",firstInterface);
            //重新绑定一个服务到注册中心，和bind的区别是,命名冲突，直接覆盖。

            System.out.println("服务器启动完毕！");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
